#pragma once


class POINT3DF:
  public POINTF
{
public:
  double  z;
};

class POINT3D:
  public POINT
{
public:
  long  z;
};

typedef struct tagRECT 
{ 
  int left, top, width, height; 
  
} RECT, *pRECT;

class Vector3D :
  public Vector2D
{
protected:
  POINT3D    m_p1;
  POINT3D    m_p2;

  POINT3DF   m_normVector3D;

public:
  Vector3D(void);
  ~Vector3D(void);
  Vector3D(const POINT3D & p1, const POINT3D & p2);
  double GetProduct(Vector3D &);
  void SetVector(const POINT3D &, const POINT3D &);
  
private:
  virtual void NormalizeVector();
  virtual void CalculateParameters();
  virtual void CalculateNormalVectorProduct(const Vector3D &);
  virtual void CalculateLength();
};
